<?php
//mysql抽象基类,单利连接数据库
//供mysql.class.test.php使用
abstract class mysql{
	private static $link='';
	protected $where="";
	protected $limit="";
	protected $tablename="";
	//公共where条件
	function where($where){
		$this->where="where $where";
		return $this;
	}
	//公共limit分页显示
	function limit($limit){
		$this->limit="limit $limit";
		return $this;
	}
	//防止克隆
	protected function __clone(){
	}
	//初始化
	function __construct(){
		$re=self::myLink();
		// var_dump(self::$link);
	}
	//连接对象
	protected static function myLink($database="wgf",$host="127.0.0.1", $user="root", $password="qiqiao",$char="utf8"){
	 	if(self::$link ==null){
	 	 	self::$link = mysqli_connect($host, $user, $password, $database);
			self::$link->query("set names $char");
	 	}
		return self::$link;
	}
	//查询
	protected function select($cols="*"){
		$sql="select $cols from $this->tablename $this->where $this->limit";
		$re=self::$link->query($sql);
		$this->where="";
		if($re){
			$arr=$re->fetch_all();
			if($arr){ 
				return $arr;
			}else{
				return null;
			}
		}else{
			return FALSE;
		}
	}
	//删除
	protected function del(){
		$sql="delete from $this->tablename $this->where";
		self::$link->query($sql);
		$this->where="";
		$row=mysqli_affected_rows(self::$link);
		if($row>0){
			return TRUE;
		}else{
			return FALSE;
		}
	}
	//修改
	protected function save($arr){
		foreach($arr as $k=>$v){
			$str .=$k."="."'".$v."'".",";			
		}
		$str=trim($str,",");
		$sql="update $this->tablename set $str $this->where";
		$re=self::$link->query($sql);
		$row=mysqli_affected_rows(self::$link);
		$this->where="";
		if($row>0){
			return TRUE;
		}else{
			return false;
		}
	}
	//添加
	protected function add($arr){
		$keys=array_keys($arr);
		$keys=join(",",$keys);
		$values=array_values($arr);
		$values="'".join("','",$values)."'";
		$sql="insert $this->tablename ($keys) values ($values)";
		self::$link->query($sql);
		$row=mysqli_insert_id(self::$link);
		if($row){
			return TRUE;
		}else{
			return FALSE;
		}
	}
	//执行所有sql
	protected function sql($sql){
		$patt="/^select.*/";
		preg_match_all($patt, $sql,$arr);
		if($arr[0]!=null){
			$re=self::$link->query($sql);
			if(is_object($re)){
				$arr=$re->fetch_all();
				if($arr){
					return $arr;
				}else{
					return $arr;
				}
			}else{
				echo "查询语句拼写错误！";
			}
		}else{
			echo $sql;
			self::$link->query($sql);
			$row=mysqli_affected_rows(self::$link);
			if($row>0){
				return true;
			}else{
				return FALSE;
			}
		}		
	}
	
	//析构方法（类被用完了之后，在释放之前，自动执行析构方法）
	function __destruct(){
		self::$link->close();
	}
}